/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package bankowosc.polaczenie;
import bankowosc.dane.Polecenie_zaplaty;
import bankowosc.dane.Polecenie_przelewu ;
import bankowosc.dane.Lista_przelewow_stalych ;
import static com.sun.org.apache.xalan.internal.lib.ExsltDatetime.date;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.math.*;
import java.util.Date;
import java.text.SimpleDateFormat;
/**
 *
 * @author Maciek
 */
public class TransakcjeDB {
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_winien(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where NR_RACHUNKU_KLIENTA="+nr_rach;
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
			rs.close();
                        
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
     public ArrayList<Polecenie_przelewu > pobierz_przelewy_ma(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where NR_RACHUNKU_WIERZYCIELA="+nr_rach;
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
			rs.close();
                        
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_roczne(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-365) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_roczne_oczekujace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-365) and SYSDATE and id_statusu=1 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
     public ArrayList<Polecenie_przelewu > pobierz_przelewy_roczne_przychodzace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where ( NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-365) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	} public ArrayList<Polecenie_przelewu > pobierz_przelewy_roczne_wychodzace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" ) and DATA_WYKONANIA between (SYSDATE-365) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public String pobierz_przelewy_roczne_saldo_poczatkowe(polacz p, String nr_rach) {
	ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                Float przychody = null, wydatki= null;
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+") and DATA_WYKONANIA <(SYSDATE-365) and id_statusu=2 and NR_RACHUNKU_WIERZYCIELA!="+nr_rach+"" ;
                String komenda2="select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA <(SYSDATE-365) and id_statusu=2 and NR_RACHUNKU_KLIENTA!="+nr_rach+"";
                
                try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
			wydatki=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    try {
                       
			ResultSet rs = stmt.executeQuery(komenda2);
			while(rs.next()) {
			przychody=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    //System.out.println(przychody+" "+wydatki);
                    String w = new String(przychody-wydatki+"");
		return w;
	}
    
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_miesieczne(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-31) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_miesieczne_oczekujace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-31) and SYSDATE and id_statusu=1 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_miesieczne_wychodzace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" ) and DATA_WYKONANIA between (SYSDATE-31) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_miesieczne_przychodzace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where ( NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-31) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
     public String pobierz_przelewy_miesieczne_saldo_poczatkowe(polacz p, String nr_rach) {
	ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                Float przychody = null, wydatki= null;
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+") and DATA_WYKONANIA <(SYSDATE-30) and id_statusu=2 and NR_RACHUNKU_WIERZYCIELA!="+nr_rach+"" ;
                String komenda2="select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA <(SYSDATE-30) and id_statusu=2 and NR_RACHUNKU_KLIENTA!="+nr_rach+"";
                
                try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
			wydatki=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    try {
                       
			ResultSet rs = stmt.executeQuery(komenda2);
			while(rs.next()) {
			przychody=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    //System.out.println(przychody+" "+wydatki);
                    String w = new String(przychody-wydatki+"");
		return w;
	}
    
	
    
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_tygodniowe(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-7) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
     public ArrayList<Polecenie_przelewu > pobierz_przelewy_tygodniowe_oczekujace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-7) and SYSDATE and id_statusu=1 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_tygodniowe_wychodzace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" ) and DATA_WYKONANIA between (SYSDATE-7) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_tygodniowe_przychodzace(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where ( NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between (SYSDATE-7) and SYSDATE and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public Float pobierz_przelewy_tygodniowe_saldo_poczatkowe(polacz p, String nr_rach) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                Float przychody = null, wydatki= null;
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+") and DATA_WYKONANIA <(SYSDATE-7) and id_statusu=2 and NR_RACHUNKU_WIERZYCIELA!="+nr_rach+"" ;
                String komenda2="select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA <(SYSDATE-7) and id_statusu=2 and NR_RACHUNKU_KLIENTA!="+nr_rach+"";
                
                try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
			wydatki=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    try {
                       
			ResultSet rs = stmt.executeQuery(komenda2);
			while(rs.next()) {
			przychody=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    //System.out.println(przychody+" "+wydatki);
		return przychody-wydatki;
	}
    
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_od_do(polacz p, String nr_rach,String od, String doo) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
                od=od.replaceAll("-","/");
                doo=doo.replaceAll("-","/");
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between '"+od+"' and '"+doo+"' and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public ArrayList<Polecenie_przelewu > pobierz_przelewy_od_do_oczekujace(polacz p, String nr_rach,String od, String doo) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
                od=od.replaceAll("-","/");
                doo=doo.replaceAll("-","/");
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" or NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between '"+od+"' and '"+doo+"' and id_statusu=1 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
     public ArrayList<Polecenie_przelewu > pobierz_przelewy_od_do_wychodzace(polacz p, String nr_rach,String od, String doo) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
                od=od.replaceAll("-","/");
                doo=doo.replaceAll("-","/");
		String komenda = "select * from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+" ) and DATA_WYKONANIA between '"+od+"' and '"+doo+"' and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	} public ArrayList<Polecenie_przelewu > pobierz_przelewy_od_do_przychodzace(polacz p, String nr_rach,String od, String doo) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat();
                od=od.replaceAll("-","/");
                doo=doo.replaceAll("-","/");
		String komenda = "select * from Polecenie_przelewu where ( NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA between '"+od+"' and '"+doo+"' and id_statusu=2 ";
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
						sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10)));
			}
                        
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    public String pobierz_przelewy_od_do_saldo_poczatkowe(polacz p, String nr_rach,String od, String doo) {
		ArrayList<Polecenie_przelewu > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                Date dzisiaj = new Date();
                Float przychody = null, wydatki= null;
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_KLIENTA="+nr_rach+") and DATA_WYKONANIA <'"+od+"' and id_statusu=2 and NR_RACHUNKU_WIERZYCIELA!="+nr_rach+"" ;
                String komenda2="select NVL(sum(wartosc),0) from Polecenie_przelewu where (NR_RACHUNKU_WIERZYCIELA="+nr_rach+") and DATA_WYKONANIA <'"+od+"' and id_statusu=2 and NR_RACHUNKU_KLIENTA!="+nr_rach+"";
                
                try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
			wydatki=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    try {
                       
			ResultSet rs = stmt.executeQuery(komenda2);
			while(rs.next()) {
			przychody=rs.getFloat(1);
                        }
                        
			rs.close();
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
                    //System.out.println(przychody+" "+wydatki);
                    String w = new String(przychody-wydatki+"");
		return w;
	}
    public Polecenie_przelewu  pobierz_przelew(polacz p, String id) {
		Polecenie_przelewu  przelew= new Polecenie_przelewu();
		Statement stmt = p.getStmt();
                 SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_przelewu where ID_POLECENIA_PRZELEWU="+id;
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelew= new Polecenie_przelewu (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),rs.getString(4),rs.getString(5),
                                      		sdf.format(rs.getDate(6)),rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getInt(10));
			  }rs.close();
			return przelew;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
    
    public ArrayList<Lista_przelewow_stalych > pobierz_przelewy_stale(polacz p, String nr_rach) {
		ArrayList<Lista_przelewow_stalych > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
		String komenda = "select * from lista_przelewow_stalych where NR_RACHUNKU="+nr_rach;
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Lista_przelewow_stalych (rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getInt(4)));
			}
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

        public ArrayList<Polecenie_zaplaty > pobierz_zaplaty(polacz p, String nr_rach) {
		ArrayList<Polecenie_zaplaty > przelewy = new ArrayList<>();
		Statement stmt = p.getStmt();
                SimpleDateFormat sdf = new SimpleDateFormat();
		String komenda = "select * from Polecenie_zaplaty where NR_RACHUNKU_KLIENTA="+nr_rach;
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				przelewy.add(new Polecenie_zaplaty (rs.getInt(1),rs.getBigDecimal(2).toString(),rs.getBigDecimal(3).toString(),sdf.format(rs.getDate(4)),rs.getString(5),rs.getString(6),
						rs.getString(7),rs.getFloat(8),rs.getInt(9),rs.getFloat(10),rs.getInt(11)));
			}
			rs.close();
			return przelewy;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

public boolean wykonaj_przelew(polacz p,  String RACHUNEK_WIERZYCIELA ,String RACHUNEK_KLIENTA   ,String NAZWA_WIE,String ADRES_WIE  ,String TYTUL ,float WARTOSC  ,int ID_WALUTY ) {
		
		Connection c = p.getC();
                BigDecimal biw = new BigDecimal(RACHUNEK_WIERZYCIELA);
                BigDecimal bik = new BigDecimal(RACHUNEK_KLIENTA);
		try {
			CallableStatement ctmt = c.prepareCall("{call WYKONJA_PRZELEW(?,?,?,?,?,?,?)}");
			ctmt.setBigDecimal(1, biw);
			ctmt.setBigDecimal(2, bik);
			ctmt.setString(3, NAZWA_WIE);
			ctmt.setString(4, ADRES_WIE);
			ctmt.setString(5, TYTUL);
			ctmt.setFloat(6, WARTOSC);
			ctmt.setInt(7, ID_WALUTY);
		
			ctmt.execute();
                        return true;
		} catch (SQLException e) {
			e.printStackTrace();
                        return false;
		}
		
	}

public float  pobierz_srodki_dostepne(polacz p, String nr_rach)
{               
                float kwota=0;
                Statement stmt = p.getStmt();
		String komenda = "select SALDO_DOSTEPNE from Rachunek where NR_RACHUNKU="+nr_rach;
		try {
                       
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
                            kwota= rs.getFloat(1);
			}
			rs.close();
			return kwota;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
} 
public boolean  usun_polecenie_przelewu(polacz p, String id)
{               
               Connection c = p.getC();
                BigDecimal biw = new BigDecimal(id);
		try {
			CallableStatement ctmt = c.prepareCall("{call USUN_POLECENIE_PRZELEWU(?)}");
			ctmt.setBigDecimal(1, biw);
			ctmt.execute();
                        return true;
		} catch (SQLException e) {
			e.printStackTrace();
                        return false;
		}
} 
public boolean  dodaj_polecenie_przelewu(polacz p,  String RACHUNEK_WIERZYCIELA ,String RACHUNEK_KLIENTA   ,String NAZWA_WIE,String ADRES_WIE  ,String TYTUL ,float WARTOSC  ,int ID_WALUTY,int Okres, Date data)
{               
               Connection c = p.getC();
               
                java.sql.Date sqlDate = new java.sql.Date(data.getTime());
                 BigDecimal biw = new BigDecimal(RACHUNEK_WIERZYCIELA);
                BigDecimal bik = new BigDecimal(RACHUNEK_KLIENTA);
		try {
			CallableStatement ctmt = c.prepareCall("{call DODAJ_PRZELEW_DO_LISTY(?,?,?,?,?,?,?,?,?)}");
				ctmt.setBigDecimal(1, biw);
			ctmt.setBigDecimal(2, bik);
			ctmt.setString(3, NAZWA_WIE);
			ctmt.setString(4, ADRES_WIE);
			ctmt.setString(5, TYTUL);
			ctmt.setFloat(6, WARTOSC);
			ctmt.setInt(7, ID_WALUTY);
                        ctmt.setInt(8, Okres);
                        ctmt.setDate(9, sqlDate);
			ctmt.execute();
                        return true;
		} catch (SQLException e) {
			e.printStackTrace();
                        return false;
		}
} 
public boolean  dodaj_polecenie_zaplaty(polacz p,  String RACHUNEK_WIERZYCIELA ,String RACHUNEK_KLIENTA   ,Date DATA_PIERWSZEGO_WYKONANIA,String TYTUL  ,String NAZWA_WIERZYCIELA ,String ADRES_WIERZYCIELA  ,float WARTOSC, float MAKSYMALNA_KWOTA)
{               
               Connection c = p.getC();
               
                java.sql.Date sqlDate = new java.sql.Date(DATA_PIERWSZEGO_WYKONANIA.getTime());
                 BigDecimal biw = new BigDecimal(RACHUNEK_WIERZYCIELA);
                BigDecimal bik = new BigDecimal(RACHUNEK_KLIENTA);
		try { 

	
			CallableStatement ctmt = c.prepareCall("{call DODAJ_ZLECENIE_ZAPLATY(?,?,?,?,?,?,?,?)}");
				ctmt.setBigDecimal(1, biw);
			ctmt.setBigDecimal(2, bik);
			ctmt.setDate(3, sqlDate);
			ctmt.setString(4, TYTUL);
			ctmt.setString(5, NAZWA_WIERZYCIELA);
			ctmt.setString(6, ADRES_WIERZYCIELA);
			ctmt.setFloat(7, WARTOSC);
                        ctmt.setFloat(8, MAKSYMALNA_KWOTA);
			ctmt.execute();
                        return true;
		} catch (SQLException e) {
			e.printStackTrace();
                        return false;
		}
}
public boolean  Symulacja_zaplat(polacz p ,Date DATA_Symulowana)
{
               Connection c = p.getC();
               
                java.sql.Date sqlDate = new java.sql.Date(DATA_Symulowana.getTime());

		try { 
                      
			CallableStatement ctmt = c.prepareCall("{call SPRAWDZ_POLECENIA_ZAPLATY(?)}");
			ctmt.setDate(1, sqlDate);
                          System.out.println(sqlDate);
			ctmt.execute();
                        return true;
		} catch (SQLException e) {
			e.printStackTrace();
                        return false;
		}
}
public boolean  Symulacja_przelewu(polacz p ,Date DATA_Symulowana)
{
               Connection c = p.getC();
               
                java.sql.Date sqlDate = new java.sql.Date(DATA_Symulowana.getTime());

		try { 
                      
			CallableStatement ctmt = c.prepareCall("{call SPRAWDZ_POLECENIA_SPRAWDZ_POLECENIA_PRZELEWU(?)}");
			ctmt.setDate(1, sqlDate);
                          System.out.println(sqlDate);
			ctmt.execute();
                        return true;
		} catch (SQLException e) {
			e.printStackTrace();
                        return false;
		}
}
}
